/*
 * @Description: 
 * @version: 
 * @Author: cy
 * @Date: 2021-12-31 16:14:46
 * @LastEditors: cy
 * @LastEditTime: 2021-12-31 16:52:31
 */
// LeetCode: 83
// 思路：输入的链表是有序的，所以重复元素一定相邻
// 遍历链表，如果发现当前元素和下个元素值相同，就删除下个元素值
// 遍历结束返回原链表头部
var a = { val: 1 };
var b = { val: 1 };
var c = { val: 1 };
a.next = b;
b.next = c;

function print(v) {
    while(v) {
        console.log(v.val);
        v = v.next;
    }
}
print(a)
function ListNode(val) {
    this.val = val;
    this.next = null;
}
var deleteDuplicates = function(head) {
    // 新建指针指向头部
    let p = head;
    // 保持当前元素和下个节点是有值的
    while(p && p.next) {
        // 当前节点内容等于下个节点的内容就把下个节点删除
        // 当前指针不变，因为有可能下下个元素和当前元素也
        // 一样，若移动指针很可能漏掉下个元素的处理，若不
        // 相同，则移动指针
        if (p.val === p.next.val) {
            p.next = p.next.next;
        } else {
            p = p.next;
        }
    }
    return head;
}
console.log('删除重复元素')
print(deleteDuplicates(a));